package com.eternal.base.database.entity;

import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.Ignore;
import androidx.annotation.NonNull;

import com.eternal.base.concat.PortInfo;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator
 * On 2020/4/23
 * Description:
 * @author Administrator
 */
@Entity(primaryKeys = {"mac", "port"})
public class Device {
    /**
     * 设备MAC地址
     */
    @NonNull
    public String mac;
    /**
     * 设备名称
     */
    public String name;
    /**
     * 设备类型码分为A,B,C三种类型  A 有风扇  B 为插座系列
     */
    public byte type;
    /**
     * 设备链接时间
     */
    public long connectTime;
    /**
     * 设备类型名称
     */
    public String typeName;
    /**
     * 设备温度
     */
    public int tmp;
    /**
     * 设备温度是否是摄氏度
     * 设备温度单位 false 代表华氏度 true 代表摄氏度
     */
    public boolean isDegree;
    /**
     * 设备温度上升和下降 0 代表持平，1代表下降，2代表上升
     */
    public byte tmpState;
    /**
     * 设备湿度
     */
    public int hum;
    /**
     * 设备湿度上身和下降 0 代表持平，1代表下降，2代表上升
     */
    public byte humState;
    /**
     * 设备风速
     */
    public int fan;
    /**
     * 设备风速上升和下降 0 代表持平，1代表下降，2代表上升
     */
    public byte fanState;
    /**
     * 设备亮度 1 2 3 A2 A3    总共5个档位 开发默认12345档位 已转换
     */
    public byte brightness;
    /**
     * 设备的Transition区间0-8
     */
    public byte transitionTemperature;
    /**
     * 湿度下设备的Transition
     */
    public byte transitionHumidity;
    /**
     * 设备的Calibration
     */
    public byte calibrationTemperature;
    /**
     * 湿度下设备的Calibration
     */
    public byte calibrationHumidity;
    /**
     * 当前设备的历史温湿度起始时间
     */
    public long historyTime;
    /**
     * 当前设备的新日志起始时间
     */
    public long logTime;
    /**
     * 控制页面是否是湿度  true湿度  false 温度
     */
    public boolean isControlTypeByHum;
    /**
     * 设备的工作模式
     */
    public byte workType;
    /**
     * On模式的Speed
     */
    public byte typeOn;
    /**
     * Off模式的Speed
     */
    public byte typeOff;
    /**
     * TimeToOn的Index
     */
    public char timeOn;
    /**
     * TimeToOff的Index
     */
    public char timeOff;
    /**
     * CycleToOn的index
     */
    public char cycleOn;
    /**
     * CycleToOff的index
     */
    public char cycleOff;
    /**
     * SchedToOn的index
     */
    public byte schedOn;
    /**
     * SchedToOff的index
     */
    public byte schedOff;
    /**
     * Auto的Hum的Start
     */
    public byte autoHighHum;
    /**
     * Auto的Hum的End
     */
    public byte autoLowHum;
    /**
     * Auto的TmpC的Start
     */
    public byte autoHighTmp;
    /**
     * Auto的TmpC的End
     */
    public byte autoLowTmp;
    /**
     * Auto高温出发开关
     */
    public boolean autoHighTmpSwitch;
    /**
     * Auto低温出发开关
     */
    public boolean autoLowTmpSwitch;
    /**
     * Auto高湿出发开关
     */
    public boolean autoHighHumSwitch;
    /**
     * Auto低湿出发开关
     */
    public boolean autoLowHumSwitch;
    /**
     * 当前模式剩余时间
     */
    public int currentTypeResidueTime;
    /**
     * 当前模式ToOff还是On
     */
    public boolean currentTypeResidueOn;
    /**
     * 0x00:控制器的风扇档位 0x01:插座的开关 0x02:植物灯的亮度档位
     */
    @ColumnInfo(defaultValue = "0")
    public byte fanType;
    /**
     * E家族多个端口
     */
    @Ignore
    public List<PortInfo> portList;
    @ColumnInfo(defaultValue = "0")
    public byte port;
    @ColumnInfo(defaultValue = "0")
    public byte choosePort; // 当前选中的端口
    @ColumnInfo(defaultValue = "0")
    public boolean isPlug;

    public Device(String mac) {
        this.mac = mac;
    }

    public void init(){
        connectTime=System.currentTimeMillis();
        brightness=5;
        calibrationTemperature=4;
        calibrationHumidity=4;
        transitionTemperature=0;
        transitionHumidity=0;
        typeOff =0;
        typeOn =6;
        workType=1;
        timeOn =0;
        timeOff =0;
        autoHighTmp =32;
        autoLowTmp =32;
        autoHighHum =0;
        autoLowHum =0;
        cycleOn =0;
        cycleOff =0;
        schedOn =0;
        schedOff =0;
        autoHighHumSwitch=false;
        autoLowHumSwitch=false;
        autoHighTmpSwitch=false;
        autoLowTmpSwitch=false;
        portList = new ArrayList<>();
        fanType = 0;
        port = 0;
    }
}
